A class method to introspect delegated types, schema_dump configuration via DATABASE_URL, etc | This Week in Rails
ActiveRecordに関する修正です
ActiveRecord::DelegatedType にクラスメソッドとして <role>_types を実装しています
delegated_type(role, types:, **options)
複数モデルのオブジェクト、複数テーブルのレコードを統一的に扱いたいケースがあります。たとえば、コメントモデルとメッセージモデルのレコード群を足し合わせたものから最新レコード3つを取得したいようなケースです。
Rails6.1で導入されたDelegated Typeはこのような状況でつかえます。
めちゃくちゃわかりやすい、ラブです
次のようなモデル群があるとします。
Commentモデル(contentカラムを持つ)
Messageモデル(subject, bodyカラムを持つ)
これらを統一的に扱う統合クラスであるEntryモデルをDelegated Typeをつかって実装します。
ふむふむ
たとえば、「CommentモデルとMessageモデルのレコード群を足し合わせたものから最新レコード3つを取得」するときに Entry.last(3) で取得できるようにします。
便利ですね
このプルリクでは、 delegated_type に指定したロールのタイプ(アサインされうるインスタンスのクラス名)を配列で返します
code:rb
class Entry < ActiveRecord::Base
end
いままでこのメソッドなかったんですね、意外
ドキュメントにミスがあったのでプルリクを出してみました
マージされた!